package com.example.Formatos;

import java.util.ArrayList;
import java.util.List;

import com.example.ahalatarantulis.Coordenada;
import com.example.ahalatarantulis.Matriz;

import android.graphics.Color;

public class FormataZInvertido extends Formato {

	public FormataZInvertido(int x, int y){
		
		cor = Color.MAGENTA;
		
		
		coordenadas.add(new Coordenada(x+1, y, cor));
		
		coordenadas.add(new Coordenada(x, y, cor));
		
		coordenadas.add(new Coordenada(x, y+1, cor));
		
		coordenadas.add(new Coordenada(x-1, y+1, cor));
					
	}
	@Override
	public boolean rotacionar(Matriz m) {
		List<Coordenada> coordTemp = new ArrayList<Coordenada>();
		
		if(status == 0) {
			//gira 90 graus antihorario
			int moveX = -1;
			int moveY = -1;
			for(Coordenada coord: coordenadas){
				
				coordTemp.add(new Coordenada(coord.getX()+moveX, coord.getY()+moveY, coord.getCor()));
			    moveX++;
			    moveY = -(moveX % 2);
			}
			
			this.status = 1;	
			
		} else if(status == 1) {
			//gira 90 graus horario 
			int moveX = 1;
			int moveY = 1;
			for(Coordenada coord: coordenadas){
				coordTemp.add(new Coordenada(coord.getX()+moveX, coord.getY()+moveY, cor));
				 moveX--;
				 moveY = -(moveX % 2);
			}
			
			this.status = 0;
		} 
		
		if (colide(m, coordTemp)){
			return false;
		} else {		
		
		for(Coordenada coord: coordenadas){
			m.setXY(coord.getX(), coord.getY(), Color.WHITE);
		}	
		
		for(Coordenada coord: coordTemp){
			m.setXY(coord.getX(), coord.getY(), coord.getCor());
		}
		coordenadas = coordTemp;
		}
		
		return true;
	}
	
}
